View Javadoc
1   package edu.jiangxin.apktoolbox.help.settings;
2   
3   import edu.jiangxin.apktoolbox.swing.extend.EasyChildTabbedPanel;
4   import edu.jiangxin.apktoolbox.utils.Constants;
5   import org.apache.commons.lang3.StringUtils;
6   
7   import javax.swing.*;
8   import java.awt.*;
9   import java.awt.event.ActionEvent;
10  import java.awt.event.ActionListener;
11  import java.util.Locale;
12  
13  public class LocalePanel extends EasyChildTabbedPanel {
14      private JPanel optionPanel;
15  
16      private JComboBox<String> typeComboBox;
17  
18      private JPanel operationPanel;
19  
20      private static final String[] SUPPORTED_LANGUAGES = {Locale.CHINESE.getLanguage(), Locale.ENGLISH.getLanguage()};
21  
22      @Override
23      public void createUI() {
24          BoxLayout boxLayout = new BoxLayout(this, BoxLayout.Y_AXIS);
25          setLayout(boxLayout);
26  
27          createOptionPanel();
28          add(optionPanel);
29  
30          add(Box.createVerticalStrut(Constants.DEFAULT_Y_BORDER));
31  
32          createOperationPanel();
33          add(operationPanel);
34  
35          add(Box.createVerticalStrut(15 * Constants.DEFAULT_Y_BORDER));
36      }
37  
38      private void createOptionPanel() {
39          optionPanel = new JPanel();
40          optionPanel.setLayout(new BoxLayout(optionPanel, BoxLayout.X_AXIS));
41  
42          JLabel typeLabel = new JLabel("Locale:");
43          typeComboBox = new JComboBox<>();
44          typeComboBox.setMaximumSize(new Dimension(Constants.DEFAULT_COMBOBOX_WIDTH, Constants.DEFAULT_COMBOBOX_HEIGHT));
45  
46          String currentLocaleLanguage = conf.getString("locale.language");
47          if (StringUtils.isEmpty(currentLocaleLanguage)) {
48              currentLocaleLanguage = Locale.ENGLISH.getLanguage();
49              conf.setProperty("locale.language", currentLocaleLanguage);
50          }
51  
52          for (String language : SUPPORTED_LANGUAGES) {
53              typeComboBox.addItem(language);
54              if (StringUtils.equals(currentLocaleLanguage, language)) {
55                  typeComboBox.setSelectedItem(language);
56              }
57          }
58  
59          optionPanel.add(typeLabel);
60          optionPanel.add(Box.createHorizontalStrut(Constants.DEFAULT_X_BORDER));
61          optionPanel.add(typeComboBox);
62      }
63  
64      private void createOperationPanel() {
65          operationPanel = new JPanel();
66          operationPanel.setLayout(new BoxLayout(operationPanel, BoxLayout.X_AXIS));
67  
68          JButton applyButton = new JButton("Apply");
69          applyButton.addActionListener(new ApplyButtonActionListener());
70  
71          operationPanel.add(applyButton);
72      }
73  
74      private final class ApplyButtonActionListener implements ActionListener {
75          @Override
76          public void actionPerformed(ActionEvent e) {
77              String language = (String)typeComboBox.getSelectedItem();
78              if (StringUtils.isNotEmpty(language)) {
79                  conf.setProperty("locale.language", language);
80                  JOptionPane.showMessageDialog(LocalePanel.this, "Setting locale successfully, restart the program please");
81              }
82          }
83      }
84  }